internal validation